//package com.yc.mcp;
//
//import com.yc.service.ToolServices;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.CommandLineRunner;
//import org.springframework.boot.SpringApplication;
//import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.springframework.context.annotation.ComponentScan;
//
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.List;
//import java.util.Map;
//
///**
// * MCP成绩查询服务器：基于ToolServices的向量检索查分功能
// */
//@SpringBootApplication
//@ComponentScan(basePackages = "com.yc") // 扫描ToolServices所在包
//public class ScoreQueryMcpServer implements CommandLineRunner {
//
//    @Autowired
//    private ToolServices toolServices; // 注入已有的成绩查询服务
//
//    public static void main(String[] args) {
//        SpringApplication.run(ScoreQueryMcpServer.class, args);
//    }
//
//    @Override
//    public void run(String... args) throws Exception {
//        // 1. 定义MCP工具：成绩查询工具（与ToolServices的queryScoreByVector对应）
//        ToolDefinition scoreTool = ToolDefinition.builder()
//                .name("exam_score_query")
//                .description("根据用户输入的学号、姓名或班级信息，查询考试成绩")
//                .parameters(Collections.singletonList(
//                        ToolParameter.builder()
//                                .name("userQuery")
//                                .description("用户输入的查询信息（如学号、姓名、班级）")
//                                .type(ToolParameterType.STRING)
//                                .required(true)
//                                .build()
//                ))
//                .build();
//
//        // 2. 创建请求处理器：调用ToolServices的查分方法
//        McpRequestHandler requestHandler = new McpRequestHandlerAdapter() {
//            @Override
//            public ToolExecutionResponse executeTool(String toolName, Map<String, Object> parameters, RequestContext context) {
//                // 仅处理"exam_score_query"工具
//                if (!"exam_score_query".equals(toolName)) {
//                    return ToolExecutionResponse.unknownTool(toolName);
//                }
//
//                // 参数验证
//                String userQuery = (String) parameters.get("userQuery");
//                List<ParameterValidationError> errors = new ArrayList<>();
//                if (userQuery == null || userQuery.trim().isEmpty()) {
//                    errors.add(ParameterValidationError.of("userQuery", "查询信息不能为空，请输入学号、姓名或班级"));
//                }
//                if (!errors.isEmpty()) {
//                    return ToolExecutionResponse.failure(errors);
//                }
//
//                // 调用ToolServices的向量查分逻辑
//                try {
//                    String result = toolServices.queryScoreByVector(userQuery);
//                    return ToolExecutionResponse.success(Collections.singletonMap("scoreResult", result));
//                } catch (Exception e) {
//                    return ToolExecutionResponse.failure(Collections.singletonList(
//                            ParameterValidationError.of("system", "查询失败：" + e.getMessage())
//                    ));
//                }
//            }
//        };
//
//        // 3. 启动MCP服务器（默认使用Stdio传输，可与客户端通过标准输入输出通信）
//        McpServer server = new DefaultMcpServer.Builder()
//                .toolDefinitions(Collections.singletonList(scoreTool))
//                .requestHandler(requestHandler)
//                .build();
//
//        server.start();
//        System.out.println("MCP成绩查询服务器启动成功！等待客户端连接...");
//    }
//}